package com.chain.BrotherExchange.data;

import android.os.Handler;
import android.os.Looper;

import com.chain.BrotherExchange.data.model.AddLegalTenderOrder;
import com.chain.BrotherExchange.data.model.AlipayInfo;
import com.chain.BrotherExchange.data.model.AnnouncementList;
import com.chain.BrotherExchange.data.model.Appeal;
import com.chain.BrotherExchange.data.model.ApplyUnlcokList;
import com.chain.BrotherExchange.data.model.AuthenticationNumber;
import com.chain.BrotherExchange.data.model.BankCardInfo;
import com.chain.BrotherExchange.data.model.BannerList;
import com.chain.BrotherExchange.data.model.BaseResponseModel;
import com.chain.BrotherExchange.data.model.ChargeMoney;
import com.chain.BrotherExchange.data.model.ChargeMoneyDetails;
import com.chain.BrotherExchange.data.model.ChattingRecords;
import com.chain.BrotherExchange.data.model.CheckVersion;
import com.chain.BrotherExchange.data.model.CoinAssetsDetails;
import com.chain.BrotherExchange.data.model.CoinAssetsList;
import com.chain.BrotherExchange.data.model.CoinOrderList;
import com.chain.BrotherExchange.data.model.CoinTypeList;
import com.chain.BrotherExchange.data.model.CountryCodeList;
import com.chain.BrotherExchange.data.model.EntrustQueue;
import com.chain.BrotherExchange.data.model.ExtractCoinAddressList;
import com.chain.BrotherExchange.data.model.ExtractMoneyDetails;
import com.chain.BrotherExchange.data.model.GetttestApi;
import com.chain.BrotherExchange.data.model.LegalTenderAssetsDetails;
import com.chain.BrotherExchange.data.model.LegalTenderAssetsList;
import com.chain.BrotherExchange.data.model.LegalTenderBalance;
import com.chain.BrotherExchange.data.model.LegalTenderDealList;
import com.chain.BrotherExchange.data.model.LegalTenderOrderDetails;
import com.chain.BrotherExchange.data.model.LegalTenderOrderList;
import com.chain.BrotherExchange.data.model.LegalTenderUnitPrice;
import com.chain.BrotherExchange.data.model.LegalTenderUserInfo;
import com.chain.BrotherExchange.data.model.MarketPair;
import com.chain.BrotherExchange.data.model.MoneyRecordModel;
import com.chain.BrotherExchange.data.model.MyInvitationCode;
import com.chain.BrotherExchange.data.model.OtherDetails;
import com.chain.BrotherExchange.data.model.PayPalInfo;
import com.chain.BrotherExchange.data.model.ProcedureFee;
import com.chain.BrotherExchange.data.model.Quotation;
import com.chain.BrotherExchange.data.model.QuotationTypes;
import com.chain.BrotherExchange.data.model.SingleCoinBalance;
import com.chain.BrotherExchange.data.model.TethNumberModel;
import com.chain.BrotherExchange.data.model.TokenTradeModel;
import com.chain.BrotherExchange.data.model.TradingVolume;
import com.chain.BrotherExchange.data.model.TransferDetailsList;
import com.chain.BrotherExchange.data.model.UploadFiles;
import com.chain.BrotherExchange.data.model.UserAreaCode;
import com.chain.BrotherExchange.data.model.UserAssets;
import com.chain.BrotherExchange.data.model.UserInfo;
import com.chain.BrotherExchange.data.model.UserIsAuthentication;
import com.chain.BrotherExchange.data.model.UserLogin;
import com.chain.BrotherExchange.data.model.UserPayment;
import com.chain.BrotherExchange.data.model.VisualQuotation;
import com.chain.BrotherExchange.data.model.WeChatPayInfo;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * 模拟远程环境数据
 */
public class MockRemoteDataSource implements DataSource {

    @Override
    public void homeBannerList(DataCallback<BannerList> callback) {
        String link = "https://developer.android.google.cn/";
        BannerList success = new BannerList().success("");
        success.setData(new BannerList.DataBean(Arrays.asList(
                new BannerList.DataBean.ListBean("https://developer.android.google.cn/images/cards/material-usability_2x.png", link),
                new BannerList.DataBean.ListBean("https://developer.android.google.cn/images/cards/material-style_2x.jpg", link),
                new BannerList.DataBean.ListBean("https://developer.android.google.cn/images/cards/material-animation_2x.png", link)
        )));

        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void announcementList(DataCallback<AnnouncementList> callback) {
        AnnouncementList success = new AnnouncementList().success("");
        success.setData(new AnnouncementList.DataBean(Arrays.asList(
                new AnnouncementList.DataBean.ListBean("新版交易所上线，修复已经bug."),
                new AnnouncementList.DataBean.ListBean("ETH涨幅创新高!!!")
        )));

        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void tradingVolume(DataCallback<TradingVolume> callback) {
        TradingVolume success = new TradingVolume().success("");
        success.setData(new TradingVolume.DataBean(23423, 1897523, 322));
        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void sdcQuotation(DataCallback<Quotation> callback) {
        quotationInfo(1, callback);
    }

    @Override
    public void quotationType(DataCallback<QuotationTypes> callback) {
        QuotationTypes success = new QuotationTypes().success("");
        success.setData(new QuotationTypes.DataBean(Arrays.asList(
                new QuotationTypes.DataBean.ListBean("ETH", 1),
                new QuotationTypes.DataBean.ListBean("BTC", 2),
                new QuotationTypes.DataBean.ListBean("EOS", 3)
        )));

        callback.onResult(success);
    }

    @Override
    public void procedureFee(DataCallback<ProcedureFee> callback) {
        ProcedureFee success = new ProcedureFee().success("");
        success.setData(new ProcedureFee.DataBean(0.1));
        callback.onResult(success);
    }

    @Override
    public void quotationInfo(int type, DataCallback<Quotation> callback) {
        Quotation success = new Quotation().success("");
        if (type == 1) {
            success.setData(new Quotation.DataBean(Arrays.asList(
                    new Quotation.DataBean.ListBean("ETH/SDC", "12", "-10", "12.2", "123"),
                    new Quotation.DataBean.ListBean("ETH/SDC", "12", "10", "12.2", "123"),
                    new Quotation.DataBean.ListBean("ETH/SDC", "12", "-10", "12.2", "123"),
                    new Quotation.DataBean.ListBean("ETH/SDC", "12", "10", "12.2", "123"),
                    new Quotation.DataBean.ListBean("ETH/SDC", "12", "10", "12.2", "123"),
                    new Quotation.DataBean.ListBean("ETH/SDC", "12", "10", "12.2", "123"),
                    new Quotation.DataBean.ListBean("ETH/SDC", "21", "1.1", "1.23", "321")
            )));
        } else {
            success.setData(new Quotation.DataBean(Arrays.asList(
                    new Quotation.DataBean.ListBean("ETH/SDC", "99", "410", "1.2", "13"),
                    new Quotation.DataBean.ListBean("ETH/SDC", "0.05", "0.5", "1.3", "1")
            )));
        }

        postDelayed(() -> callback.onResult(success), 500);
    }

    @Override
    public void login(String mobilePhone, String password, DataCallback<UserLogin> callback) {
        String token = "3acce602cdfb61cecd9bed72443eda927a2eb3a7285826fc77a183cd395e05ca";
        UserLogin success = new UserLogin().success("");
        success.setData(new UserLogin.DataBeanX(new UserLogin.DataBeanX.DataBean(100078, token)));
        postDelayed(() -> callback.onResult(success), 500);
    }

    @Override
    public void getUserAreaByMobilePhone(String mobilePhone, DataCallback<UserAreaCode> callback) {
        UserAreaCode success = new UserAreaCode().success("");
        success.setData(new UserAreaCode.DataBean(1, "86"));
        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void sendMessage(
            String region, String mobilePhone, int type, DataCallback<BaseResponseModel> callback) {
        postDelayed(() -> callback.onResult(BaseResponseModel.s()), 1500);
    }

    @Override
    public void retrievePassword(
            String mobilePhone, String password, String code, DataCallback<BaseResponseModel> callback) {
        callback.onResult(BaseResponseModel.s());
    }

    @Override
    public void userAssets(String token, int uid, DataCallback<UserAssets> callback) {
        UserAssets success = new UserAssets().success("");
        success.setData(new UserAssets.DataBean("100", "1000", "10",
                "20", "40", "140"));
        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void userInfo(String token, int uid, DataCallback<UserInfo> callback) {
        String url = "https://developer.android.google.cn/static/images/home/android-10-year-game.png";
        UserInfo result = new UserInfo().success("");
        result.setData(new UserInfo.DataBeanX(new UserInfo.DataBeanX.DataBean(123, "haha", url)));
        postDelayed(() -> callback.onResult(result));
    }

    @Override
    public void myInvitationCode(String token, int uid, DataCallback<MyInvitationCode> callback) {
        MyInvitationCode success = new MyInvitationCode().success("");
        success.setData(new MyInvitationCode.DataBeanX(new MyInvitationCode.DataBeanX.DataBean(
                "12", 12)));
        postDelayed(() -> callback.onResult(success), 1000);
    }

    @Override
    public void authenticationNumber(int uid, DataCallback<AuthenticationNumber> callback) {
        AuthenticationNumber success = new AuthenticationNumber().success("");
        success.setData(new AuthenticationNumber.DataBean(1, 2));
        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void realNamAuthentication(
            String token, int uid, String id, String name, String code, DataCallback<BaseResponseModel> callback) {
        postDelayed(() -> callback.onResult(BaseResponseModel.s()), 1000);
    }

    @Override
    public void userIsAuthentication(int uid, String token, DataCallback<UserIsAuthentication> callback) {
        UserIsAuthentication success = new UserIsAuthentication().success("模拟错误");
        success.setData(new UserIsAuthentication.DataBeanX(
                new UserIsAuthentication.DataBeanX.DataBean(1)));
        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void modifyTransactionPassword(
            String token, int uid, String newPassword, String confirmPassword, String code,
            DataCallback<BaseResponseModel> callback) {
        postDelayed(() -> callback.onResult(BaseResponseModel.s()), 500);
    }

    @Override
    public void countryCodeList(DataCallback<CountryCodeList> callback) {
        CountryCodeList success = new CountryCodeList().success("");
        success.setData(new CountryCodeList.DataBean(
                Arrays.asList(
                        new CountryCodeList.DataBean.ListBean("tt", 86),
                        new CountryCodeList.DataBean.ListBean("tt", 86)
                )
        ));

        postDelayed(() -> callback.onResult(success), 1000);
    }

    @Override
    public void allCoinTypeList(DataCallback<CoinTypeList> callback) {
        CoinTypeList success = new CoinTypeList().success("");
        success.setData(new CoinTypeList.DataBean(
                Arrays.asList(
                        new CoinTypeList.DataBean.ListBean(86, "eth"),
                        new CoinTypeList.DataBean.ListBean(86, "eth")
                )
        ));

        postDelayed(() -> callback.onResult(success), 1000);
    }

    @Override
    public void checkVersion(DataCallback<CheckVersion> callback) {
        CheckVersion checkVersion = new CheckVersion().success("");
        checkVersion.setData(new CheckVersion.DataBean(
                new CheckVersion.DataBean.VersionBean("3.0.1","1、修复已知bug\n2、增加法币模块",
                        "http://192.168.50.163/resource/UNT/app/build/outputs/apk/release/app-release.apk")
        ));

        callback.onResult(checkVersion);
    }

    @Override
    public void modifyUserInfo(
            String token, int uid, String name, String portrait, DataCallback<BaseResponseModel> callback) {
        postDelayed(() -> callback.onResult(BaseResponseModel.s()));
    }

    @Override
    public void modifyLoginPassword(
            String token, int uid, String oldPassword, String newPassword, String confirmPassword,
            String code, DataCallback<BaseResponseModel> callback) {
        postDelayed(() -> callback.onResult(BaseResponseModel.s()), 500);
    }

    @Override
    public void addCoinAddress(
            String token, int uid, int id, String address, String remark, DataCallback<BaseResponseModel> callback) {
        postDelayed(() -> callback.onResult(BaseResponseModel.s()), 500);
    }

    @Override
    public void extractAddressList(String token, int uid, DataCallback<ExtractCoinAddressList> callback) {
        ExtractCoinAddressList success = new ExtractCoinAddressList().success("");
        success.setData(new ExtractCoinAddressList.DataBeanX(
                new ArrayList<>(Arrays.asList(
                        new ExtractCoinAddressList.DataBeanX.DataBean("0x4444", "12", "eth"),
                        new ExtractCoinAddressList.DataBeanX.DataBean("0x12", "12", "eth")
                ))
        ));

        postDelayed(() -> callback.onResult(success), 500);
    }

    @Override
    public void deleteExtractAddress(String token, int uid, String id, DataCallback<BaseResponseModel> callback) {
        postDelayed(() -> callback.onResult(BaseResponseModel.s()), 500);
    }

    @Override
    public void cancelExtractMoney(String token, int uid, int id, DataCallback<BaseResponseModel> callback) {
        postDelayed(() -> callback.onResult(BaseResponseModel.s()), 500);
    }

    @Override
    public void coinAssetsList(String token, int uid, DataCallback<CoinAssetsList> callback) {
        CoinAssetsList success = new CoinAssetsList().success("");
        success.setData(new CoinAssetsList.DataBean(
                Arrays.asList(
                        new CoinAssetsList.DataBean.ListBean("ETH", "123", "456", "678"),
                        new CoinAssetsList.DataBean.ListBean("BTC", "123", "456", "678")
                )
        ));

        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void entrustQueue(String symbol, DataCallback<EntrustQueue> callback) {
        EntrustQueue entrustQueue = new EntrustQueue().success("");
        entrustQueue.setData(new EntrustQueue.DataBean(
                Arrays.asList(new EntrustQueue.DataBean.Bean("1", "2", "3", "4"),
                        new EntrustQueue.DataBean.Bean("2", "7", "6", "5")),
                Arrays.asList(new EntrustQueue.DataBean.Bean("3", "8", "9", "11"),
                        new EntrustQueue.DataBean.Bean("4", "1", "21", "22"))
        ));

        callback.onResult(entrustQueue);
    }

    @Override
    public void legalTenderAssetsList(String token, int uid, DataCallback<LegalTenderAssetsList> callback) {
//        CoinAssetsList success = new CoinAssetsList().success("");
//        success.setData(new CoinAssetsList.DataBean(
//                Collections.singletonList(
//                        new CoinAssetsList.DataBean.ListBean("EOS", "123", "456", "678")
//                )
//        ));
//
//        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void coinOrderList(int uid, String token, int page, DataCallback<CoinOrderList> callback) {
        CoinOrderList success = new CoinOrderList().success("");
        String type = "ETH/SDC", allNum = "1", onPrice = "12", tNum = "1";
        success.setData(new CoinOrderList.DataBean(
                new ArrayList<>(
                        Arrays.asList(
                                new CoinOrderList.DataBean.ListBean(type, 1, allNum, onPrice, tNum,
                                        1, "2018", "1", "12"),
                                new CoinOrderList.DataBean.ListBean(type, 2, allNum, onPrice, tNum,
                                        2, "2018", "2", "21"),
                                new CoinOrderList.DataBean.ListBean(type, 2, allNum, onPrice, tNum,
                                        3, "2018", "3", "31"),
                                new CoinOrderList.DataBean.ListBean(type, 1, allNum, onPrice, tNum,
                                        3, "2018", "4", "41")
                        )
                )
        ));

        callback.onResult(success);
    }

    @Override
    public void unfinishedCoinOrder(int uid, String token, int page, DataCallback<CoinOrderList> callback) {
        coinOrderList(uid, token, page, callback);
    }

    @Override
    public void cancelCoinOrder(
            int uid, String token, String id, String sign, String nonce, DataCallback<BaseResponseModel> callback) {
        callback.onResult(BaseResponseModel.s());
    }

    @Override
    public void coinAssetsDetailsList(int uid, String token, int page, DataCallback<CoinAssetsDetails> callback) {
        CoinAssetsDetails success = new CoinAssetsDetails().success("");
        success.setData(new CoinAssetsDetails.DataBean(new CoinAssetsDetails.DataBean.ListBean(
                new ArrayList<>(Arrays.asList(
                        new CoinAssetsDetails.DataBean.ListBean.ItemsBean(
                                "ETH", 1, "1", "1", 1539685547),
                        new CoinAssetsDetails.DataBean.ListBean.ItemsBean(
                                "ETH", 2, "1", "1", 1539685547)
                ))
        )));

        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void chargeMoneyDetailsList(int uid, String token, int page, DataCallback<ChargeMoneyDetails> callback) {
        ChargeMoneyDetails success = new ChargeMoneyDetails().success("");
        success.setData(new ChargeMoneyDetails.DataBean(new ChargeMoneyDetails.DataBean.ListBean(
                new ArrayList<>(Arrays.asList(
                        new ChargeMoneyDetails.DataBean.ListBean.ItemsBean(
                                "ETH", "1", 1539685547),
                        new ChargeMoneyDetails.DataBean.ListBean.ItemsBean(
                                "ETH", "1", 1539685547)
                ))
        )));

        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void extractMoneyDetailsList(int uid, String token, int page, DataCallback<ExtractMoneyDetails> callback) {
        ExtractMoneyDetails success = new ExtractMoneyDetails().success("");
        success.setData(new ExtractMoneyDetails.DataBean(new ExtractMoneyDetails.DataBean.ListBean(
                new ArrayList<>(Arrays.asList(
                        new ExtractMoneyDetails.DataBean.ListBean.ItemsBean(
                                "ETH", "10", "1", 1, 1539685547),
                        new ExtractMoneyDetails.DataBean.ListBean.ItemsBean(
                                "ETH", "10", "1", 3, 1539685547),
                        new ExtractMoneyDetails.DataBean.ListBean.ItemsBean(
                                "ETH", "10", "1", 4, 1539685547),
                        new ExtractMoneyDetails.DataBean.ListBean.ItemsBean(
                                "ETH", "10", "1", 5, 1539685547),
                        new ExtractMoneyDetails.DataBean.ListBean.ItemsBean(
                                "ETH", "10", "1", 6, 1539685547),
                        new ExtractMoneyDetails.DataBean.ListBean.ItemsBean(
                                "ETH", "10", "1", 2, 1539685547)
                ))
        )));

        postDelayed(() -> callback.onResult(success), 500);
    }

    @Override
    public void transferDetailsList(int uid, String token, int page, DataCallback<TransferDetailsList> callback) {
        TransferDetailsList success = new TransferDetailsList().success("");
        success.setData(new TransferDetailsList.DataBean(new TransferDetailsList.DataBean.ListBean(
                new ArrayList<>(Arrays.asList(
                        new TransferDetailsList.DataBean.ListBean.ItemsBean(
                                "ETH", 10, "1", 1539685547),
                        new TransferDetailsList.DataBean.ListBean.ItemsBean(
                                "ETH", 11, "1", 1539685547)
                ))
        )));

        postDelayed(() -> callback.onResult(success), 500);
    }

    @Override
    public void otherDetailsList(int uid, String token, int page, DataCallback<OtherDetails> callback) {
        OtherDetails success = new OtherDetails().success("");
        success.setData(new OtherDetails.DataBean(new OtherDetails.DataBean.ListBean(
                new ArrayList<>(Arrays.asList(
                        new OtherDetails.DataBean.ListBean.ItemsBean(
                                "ETH", 8, "1", 1539685547),
                        new OtherDetails.DataBean.ListBean.ItemsBean(
                                "ETH", 14, "1", 1539685547)
                ))
        )));

        postDelayed(() -> callback.onResult(success));
    }

    @Override
    public void extractMoney(
            int uid, String token, String id, String address, String amount, String realAmount,
            String gas, String code, String password, String phone, DataCallback<BaseResponseModel> callback) {
        callback.onResult(BaseResponseModel.s());
    }

    @Override
    public void transferToCurrency(
            int uid, String token, String id, double number, DataCallback<BaseResponseModel> callback) {
        callback.onResult(BaseResponseModel.s());
    }

    @Override
    public void chargeMoney(int uid, String token, String id, DataCallback<ChargeMoney> callback) {
        ChargeMoney success = new ChargeMoney().success("");
        success.setData(new ChargeMoney.DataBean("0x12321"));
        callback.onResult(success);
    }

    @Override
    public void singleCoinBalance(int uid, String token, String id, DataCallback<SingleCoinBalance> callback) {
        SingleCoinBalance singleCoinBalance = new SingleCoinBalance().success("");
        singleCoinBalance.setData(new SingleCoinBalance.DataBean(
                new SingleCoinBalance.DataBean.BalanceBean("45")
        ));

        callback.onResult(singleCoinBalance);
    }

    @Override
    public void uploadFile(String base64, DataCallback<UploadFiles> callback) {

    }

    @Override
    public void entrustOrder(
            int uid, String token, String symbol, int option, double onPrice, int type,
            double number, String sign, String nonce, DataCallback<BaseResponseModel> callback) {
        callback.onResult(BaseResponseModel.s());
    }

    @Override
    public void register(
            String mobilePhone, String password, int region, String inviteCode, String code,
            DataCallback<BaseResponseModel> callback) {
        callback.onResult(BaseResponseModel.s());
    }

    @Override
    public void gettestApiFirst(String phone, DataCallback<GetttestApi> callback) {

    }

    @Override
    public void gettestApiSecond(
            String phone, String challenge, String validate, String seccode, int status,
            DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void legalTenderDealList(
            int type, int tokenId, int page,  DataCallback<LegalTenderDealList> callback) {

    }

    @Override
    public void userPayment(int uid, String token, DataCallback<UserPayment> callback) {

    }

    @Override
    public void setBankPayment(
            int uid, String token, String name, String bankName, String bankAddress,
            String bankNumber, String confirmNumber, String code, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void setAliPayPayment(
            int uid, String token, String name, String aliPay, String rqCode, String code,
            DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void setWeChatPayment(
            int uid, String token, String name, String weChat, String rqCode, String code,
            DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void setPayPalPayment(
            int uid, String token, String name, String code, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void level2Certification(
            int uid, String token, String front, String reverse, String head, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void legalTenderAssetsDetails(
            int uid, String token, int page, DataCallback<LegalTenderAssetsDetails> callback) {

    }

    @Override
    public void transferToLegalTender(
            int uid, String token, String id, double number, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void bankCardInfo(int uid, String token, DataCallback<BankCardInfo> callback) {

    }

    @Override
    public void aliPayInfo(int uid, String token, DataCallback<AlipayInfo> callback) {

    }

    @Override
    public void weChatPayInfo(int uid, String token, DataCallback<WeChatPayInfo> callback) {

    }

    @Override
    public void payPalInfo(int uid, String token, DataCallback<PayPalInfo> callback) {

    }

    @Override
    public void legalTenderOrderList(int uid, String token, int page, DataCallback<LegalTenderOrderList> callback) {

    }

    @Override
    public void cancelLegalTenderOrder(int uid, String token, int id, int type, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void confirmPayment(int uid, String token, int id, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void legalTenderUserInfo(int uid, DataCallback<LegalTenderUserInfo> callback) {

    }

    @Override
    public void legalTenderUserDealList(int uid, int type, int page, DataCallback<LegalTenderDealList> callback) {

    }

    @Override
    public void legalTenderOrderDetails(int uid, String token, String id, DataCallback<LegalTenderOrderDetails> callback) {

    }

    @Override
    public void legalTenderAddOrder(int uid, String token, int id, double number, DataCallback<AddLegalTenderOrder> callback) {

    }

    @Override
    public void legalTenderBalance(
            int uid, String token, int tokenId, DataCallback<LegalTenderBalance> callback) {

    }

    @Override
    public void legalTenderAppeal(
            int uid, String token, String tokenId, String orderId, int opt, String tokenName,
            String image, String mark, String remarks, DataCallback<Appeal> callback) {

    }

    @Override
    public void orderRelease(
            int uid, String token, int orderId, String password, String sign, String nonce,
            DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void cancelAppeal(int uid, String token, int appealId, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void publishTransaction(
            int uid, String token, int type, int tokenId, String tokenName, double price,
            double number, double premium, double acceptPrice, double minPrice, double maxPrice,
            boolean isVerify, String pays, String remark, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void legalTenderUnitPrice(int tokenId, DataCallback<LegalTenderUnitPrice> callback) {

    }

    @Override
    public void editMyPublishTransactionOrderStatus(
            int uid, String token, int id, int statusId, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void editMyPublishTransactionOrder(
            int uid, String token, int id, double price, double number, double premium,
            double acceptPrice, double minPrice, double maxPrice, boolean isVerify, String pays,
            String remark, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void visualQuotation(
            String symbol, String resolution, long fromDate, long toDate, DataCallback<VisualQuotation> callback) {

    }

    @Override
    public void marketPairData(String symbol, DataCallback<MarketPair> callback) {

    }

    @Override
    public void chattingRecords(int uid, String token, String orderId, DataCallback<ChattingRecords> callback) {

    }

    @Override
    public void getTokenTrade(int uid, String token, int tokenId, DataCallback<TokenTradeModel> callback) {

    }

    @Override
    public void getTokenTethNumber(int uid, String token, DataCallback<TethNumberModel> callback) {

    }

    @Override
    public void getMoneyRecord(int uid, String token, int page, int type, DataCallback<MoneyRecordModel> callback) {

    }

    @Override
    public void lockToken(int uid, String token, int tokenId, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void applyNode(int uid, String token, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void applyUnlock(int uid, String token, int tokenId, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void cancelApplyToken(int uid, String token, int id, DataCallback<BaseResponseModel> callback) {

    }

    @Override
    public void getApplyUnlockList(int uid, String token, int page, DataCallback<ApplyUnlcokList> callback) {

    }


    private void postDelayed(Runnable runnable) {
        postDelayed(runnable, 0);
    }

    private void postDelayed(Runnable runnable, long delayMillis) {
        new Handler(Looper.myLooper()).postDelayed(runnable, delayMillis);
    }
}
